{{!
  Copyright (c) HashiCorp, Inc.
  SPDX-License-Identifier: BUSL-1.1
}}

{{! Show results if model has an ID, which is only generated after save }}
{{#if @model.id}}
  <main class="box is-fullwidth is-sideless is-paddingless is-marginless">
    {{#each this.returnedFields as |field|}}
      {{#let (find-by "name" field @model.allFields) as |attr|}}
        {{#if attr.options.detailLinkTo}}
          <InfoTableRow
            @label={{capitalize (or attr.options.detailsLabel attr.options.label (humanize (dasherize attr.name)))}}
            @value={{get @model attr.name}}
            @addCopyButton={{or (eq attr.name "issuerId") (eq attr.name "keyId")}}
          >
            <LinkTo @route={{attr.options.detailLinkTo}} @models={{array @model.backend (get @model attr.name)}}>{{get
                @model
                attr.name
              }}</LinkTo>
          </InfoTableRow>
        {{else if attr.options.isCertificate}}
          <InfoTableRow
            @label={{capitalize (or attr.options.detailsLabel attr.options.label (humanize (dasherize attr.name)))}}
          >
            <CertificateCard @data={{get @model attr.name}} />
          </InfoTableRow>
        {{else}}
          <InfoTableRow
            @label={{capitalize (or attr.options.detailsLabel attr.options.label (humanize (dasherize attr.name)))}}
            @value={{get @model attr.name}}
          />
        {{/if}}
      {{/let}}
    {{/each}}
    <InfoTableRow @label="Private key">
      {{#if @model.privateKey}}
        <CertificateCard @data={{@model.privateKey}} />
      {{else}}
        <Hds::Badge @text="internal" />
      {{/if}}
    </InfoTableRow>
    <InfoTableRow @label="Private key type" @value={{@model.privateKeyType}}>
      {{#if @model.privateKeyType}}
        {{@model.privateKeyType}}
      {{else}}
        <Hds::Badge @text="internal" />
      {{/if}}
    </InfoTableRow>
    <ParsedCertificateInfoRows @model={{@model.parsedCertificate}} />
  </main>
  <footer>
    <div class="field is-grouped is-fullwidth has-top-margin-l">
      <Hds::Button @text="Done" {{on "click" @onComplete}} data-test-done />
    </div>
  </footer>
{{else}}
  <form {{on "submit" (perform this.save)}} data-test-pki-config-generate-root-form>
    <MessageError @errorMessage={{this.errorBanner}} class="has-top-margin-s" />
    <h2 class="title is-size-5 has-border-bottom-light page-header" data-test-generate-root-title="Root parameters">
      Root parameters
    </h2>
    {{#each this.defaultFields as |field|}}
      {{#let (find-by "name" field @model.allFields) as |attr|}}
        <FormField @attr={{attr}} @model={{@model}} @modelValidations={{this.modelValidations}} data-test-field>
          {{#if (eq field "customTtl")}}
            {{! customTtl attr has editType yield, which will render this }}
            <PkiNotValidAfterForm @attr={{attr}} @model={{@model}} />
          {{/if}}
        </FormField>
      {{/let}}
    {{/each}}

    <PkiGenerateToggleGroups @model={{@model}} @modelValidations={{this.modelValidations}} />

    {{#if @urls}}
      <fieldset class="box is-shadowless is-marginless is-borderless is-fullwidth" data-test-urls-section>
        <h2
          class="title is-size-5 page-header {{if @urls.canCreate 'has-border-bottom-light' 'is-borderless'}}"
          data-test-generate-root-title="Issuer URLs"
        >
          Issuer URLs
        </h2>
        {{#if @urls.canSet}}
          {{#each @urls.allFields as |attr|}}
            {{#if (not-eq attr.name "mountPath")}}
              <FormField
                @attr={{attr}}
                @mode="create"
                @model={{@urls}}
                @showHelpText={{attr.options.showHelpText}}
                data-test-urls-field
              />
            {{/if}}
          {{/each}}
        {{else}}
          <EmptyState
            @title="You do not have permissions to set URLs."
            @message="These are not required but will need to be configured later. You can do this via the CLI or by changing your permissions and returning to this form."
          />
        {{/if}}
      </fieldset>
    {{/if}}

    <hr class="has-background-gray-100" />
    <Hds::ButtonSet>
      <Hds::Button @text="Done" type="submit" data-test-submit />
      <Hds::Button @text="Cancel" @color="secondary" {{on "click" @onCancel}} data-test-cancel />
    </Hds::ButtonSet>
    {{#if this.invalidFormAlert}}
      <div class="control">
        <AlertInline
          @type="danger"
          class="has-top-padding-s"
          @message={{this.invalidFormAlert}}
          data-test-pki-generate-root-validation-error
        />
      </div>
    {{/if}}
  </form>
{{/if}}